package com.ruoyi.system.mapper.transport;

import com.ruoyi.system.domain.db.transport.TransportTask;
import com.ruoyi.system.domain.dto.TransportTaskDto;
import com.ruoyi.system.domain.request.TradeCargoOrderDeliveryRequest;

import java.util.List;


/**
 * 运输任务Mapper接口
 * 
 * @author ruoyi
 * @date 2023-08-03
 */
public interface TransportTaskMapper 
{
    /**
     * 查询运输任务
     * 
     * @param taskId 运输任务主键
     * @return 运输任务
     */
    public TransportTaskDto selectTransportTaskByTaskId(Long taskId);

    /**
     * 查询运输任务列表
     * 
     * @param transportTask 运输任务
     * @return 运输任务集合
     */
    public List<TransportTaskDto> selectTransportTaskList(TransportTask transportTask);

    /**
     * 分配运输任务
     */
    public int assignTransportTask(TradeCargoOrderDeliveryRequest tradeCargoOrderDeliveryRequest);

    /**
     * 新增运输任务
     * 
     * @param transportTask 运输任务
     * @return 结果
     */
    public int insertTransportTask(TransportTask transportTask);

    /**
     * 修改运输任务
     * 
     * @param transportTask 运输任务
     * @return 结果
     */
    public int updateTransportTask(TransportTask transportTask);

    /**
     * 删除运输任务
     * 
     * @param taskId 运输任务主键
     * @return 结果
     */
    public int deleteTransportTaskByTaskId(Long taskId);

    /**
     * 批量删除运输任务
     * 
     * @param taskIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteTransportTaskByTaskIds(Long[] taskIds);

    void deleteTransportOrderByTaskId(Long taskId);

    void assignInternalTransportCar(Long taskId, Long vehicleId);

    void assignExternalTransportCar(TradeCargoOrderDeliveryRequest tradeCargoOrderDeliveryRequest);

    void deleteInternalTransportCarByTaskId(Long taskId);

    void deleteExternalTransportCarByTaskId(Long taskId);

    List<TransportTaskDto> selectTransportTaskListByDriverId(Long driverId);
}
